package com.multitrack.sql;
import java.io.IOException;
import java.util.List;

import com.google.android.gcm.server.Message;
import com.google.android.gcm.server.MulticastResult;
import com.google.android.gcm.server.Result;
import com.google.android.gcm.server.Sender;

public class GCMSender {
	private static final String TAG = "GCM";

	private Sender gcmSender; // GCM Sender
	private Message gcmMessage; // GCM Message
	private MulticastResult gcmMultiResult; // GCM Multi Result(일괄 전송)

	// 단일전송에 필요한 변수
	private String registrationId = "1";
	// 파싱하기 위해 데이터를 담을 변수
	private static String JSON = null;
	// 개발자 콘솔에서 발급받은 API Key
	private static String API_KEY = "AIzaSyB5qIrITCB7tJhlp9E0GtInv-DpTyhZ2t0";
	// 메세지의 고유 ID(?)정도로 생각하면 됩니다. 메세지의 중복수신을 막기 위해 랜덤값을 지정합니다
	private static String COLLAPSE_KEY = String
			.valueOf(Math.random() % 100 + 1);
	// 기기가 활성화 상태일 때 보여줄 것인지.
	private static boolean DELAY_WHILE_IDLE = true;
	// 기기가 비활성화 상태일 때 GCM Storage에 보관되는 시간
	private static int TIME_TO_LIVE = 3;
	// 메세지 전송 실패시 재시도할 횟수
	private static int RETRY = 3;

	/** Called when the activity is first created. */

	public void setMessage(String message) {
		gcmSender = new Sender(API_KEY);
		gcmMessage = new Message.Builder().collapseKey(COLLAPSE_KEY)
				.delayWhileIdle(DELAY_WHILE_IDLE).timeToLive(TIME_TO_LIVE)
				.addData("ticker", "메시지 도착")
				.addData("title", message)
				.addData("msg", "").build();
		
	}

	public void sendMessage(List<String> registrationIds) {
		try {
			gcmMultiResult = gcmSender.send(gcmMessage, registrationIds, RETRY);
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println(TAG);
		System.out.println("getCanonicalIds : " + gcmMultiResult.getCanonicalIds()
				+ "\n" + "getSuccess : " + gcmMultiResult.getSuccess() + "\n"
				+ "getTotal : " + gcmMultiResult.getTotal() + "\n"
				+ "getMulticastId : " + gcmMultiResult.getMulticastId());
	}
}